#include "BinarySearchTree.h"

void test1()
{
    BSTree<int> b1;
    b1.insert(10);
    b1.insert(16);
    b1.insert(20);
    b1.insert(15);
    b1.insert(9);
    b1.insert(2);
    b1.insert(4);
    b1.insert(13);
    b1.insert(6);

    b1.InOrder();
}

void test2()
{
    int arr[] = { 8,12,3,5,14,9,0,1,2,6 };
    BSTree<int> b1;
    for (auto e : arr)
        b1.insert(e);

    b1.InOrder();

    for (auto e : arr)
    {
        b1.erase(e);
        b1.InOrder();
    }

    b1.InOrder();
}

void test3()
{
    int arr[] = { 8,12,3,5,14,9,0,1,2,6 };
    BSTree<int> b1;
    for (auto e : arr)
        b1.insertR(e);

    b1.InOrder();

    for (auto e : arr)
    {
        b1.eraseR(e);
        b1.InOrder();
    }

    b1.InOrder();
}

void test4()
{
    int arr[] = { 8,12,3,5,14,9,0,1,2,6 };
    BSTree<int> b1(arr, 10);
    b1.InOrder();
    BSTree<int> b2 = b1;
    b2.InOrder();
    BSTree<int> b3;
    b3.insertR(122222);
    b3.insertR(1222);
    b3.insertR(122);
    b3.insertR(12222);
    b3.insertR(1222222);
    b3.InOrder();
    b2 = b3;
    b2.InOrder();
}

int main()
{
    //test1();
    //test2();
    //test3();
    test4();

    return 0;
}

